/**
 * 
 */
package modelo.gestionFacturacion;

import interfacesRemotas.InterfazBalance;
import interfacesRemotas.InterfazObservaciones;

import java.io.Serializable;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.UnknownHostException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;
import java.util.Calendar;

/**
 * @author anab
 * 
 */
public class Balance implements Serializable {
	int idBalance;
	private int anio;
	List<LineaBalance> lineas;
	private String ipServidorRMI = null;
	
	public Balance(){
		anio = Calendar.getInstance().get(Calendar.YEAR);
		lineas = new ArrayList<LineaBalance>();
	}
	
	public List<LineaBalance> getLineas() {
		return lineas;
	}

	public void setLineas(List<LineaBalance> lineas) {
		this.lineas = lineas;
	}

	public Balance(int id_b, int year, String ip){
		idBalance = id_b;
		anio = year;
		ipServidorRMI = ip;
		lineas = new ArrayList<LineaBalance>();
	}
	
	public Balance (int id_b, int year){
		try {
			this.ipServidorRMI = InetAddress.getLocalHost().getHostAddress();
		} catch (UnknownHostException e) {
			//e.printStackTrace();
			System.err.println("Error en la clase Pedido al crear el pedido: " + e.getMessage());
		}
		
		lineas = new ArrayList<LineaBalance>();
		
		idBalance = id_b;
		anio = year;
	}
	
	public void agregarLineaBalance(LineaBalance lp){
		if ( existeProducto(lp.getProducto().consultarIdProducto()) == -1)
			lineas.add(lp);
	}
	
	public int existeProducto(int id){
		for (int i=0; i<lineas.size(); ++i){
			if (lineas.get(i).getProducto().consultarIdProducto() == i)
				return i;
		}
		
		return -1;
	}
	
	
	
	
	public LineaBalance getLineaBalance(int pos){
		return lineas.get(pos);
	}

	public int getIdBalance() {
		return idBalance;
	}

	public void setIdBalance(int idBalance) {
		this.idBalance = idBalance;
	}

	public int getAnio() {
		return anio;
	}

	public void setAnio(int anio) {
		this.anio = anio;
	}

	public boolean actualizarBD() {
		// TODO Auto-generated method stub
		InterfazBalance ib;
		boolean insertada=true;
			try {
				ib = (InterfazBalance)Naming.lookup("//"+this.ipServidorRMI+"/AccesoBalance");
				
				for (int i=0; i<this.lineas.size(); ++i)
					insertada &= ib.actualizarLineaBalance(lineas.get(i).idLineaBalance, lineas.get(i).getCantidad());
				
				
			} catch (RemoteException e) {
				System.err.println("Error al conectar con la clase remota AccesoObservaciones desde el metodo agregarObservaciones de Pedido: " + e.getMessage());
			} catch (MalformedURLException e) {
				System.err.println("Error en la clase Pedido en el metodo agregarObservaciones: " + e.getMessage());
			} catch (NotBoundException e) {
				System.err.println("Error en la clase Pedido en el metodo agregarObservaciones: " + e.getMessage());
			}
			return insertada;
	}
	
}
